package com.eedi.framework.notify.service;

import com.eedi.framework.common.pojo.PageResult;
import com.eedi.framework.notify.controller.sys.vo.SysNoticePageReq;
import com.eedi.framework.notify.controller.sys.vo.SysNoticeResp;
import com.eedi.framework.notify.controller.sys.vo.SysNoticeSaveReq;
import com.eedi.framework.notify.controller.sys.vo.SysNoticeUpReq;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.Collection;
import java.util.List;

/**
 * 通知公告 Service 接口
 */
public interface SysNoticeService {

    /**
     * 创建通知公告
     *
     * @param createReqVO 通知公告
     * @return 编号
     */
    String createNotice(SysNoticeSaveReq createReqVO);

    /**
     * 更新通知公告
     *
     * @param reqVO 通知公告
     */
    void updateNotice(SysNoticeUpReq reqVO);

    /**
     * 更新通知公告
     *
     * @param sysNoticeId 通知公告ID
     */
    void enable(@Valid @NotBlank String sysNoticeId);

    /**
     * 更新通知公告
     *
     * @param sysNoticeId 通知公告ID
     */
    void disable(@Valid @NotBlank String sysNoticeId);

    /**
     * 删除通知公告
     *
     * @param id 编号
     */
    void deleteNotice(String id);

    /**
     * 获得通知公告分页列表
     *
     * @param reqVO 分页条件
     * @return 部门分页列表
     */
    PageResult<SysNoticeResp> getNoticePage(SysNoticePageReq reqVO);

    /**
     * 获得通知公告
     *
     * @param id 编号
     * @return 通知公告
     */
    SysNoticeResp getNotice(String id);

    /**
     * 获取不在范围内的公告列表
     * @param sysNoticeIds
     * @return
     */
    List<SysNoticeResp> getNoticeNotInIds(Collection<String> sysNoticeIds);

}
